<?php

/**
 * controler para almacenes
 *
 * @author jreyes
 */



require_once 'class/so/ordenes/DP/SoOrdenDP.class.php';
require_once 'class/so/ordenes/DP/SoOrdenLineaDP.class.php';
require_once 'class/so/ordenes/FN/SoOrdenFN.class.php';
require_once 'class/so/ordenes/FN/SoOrdenLineaFN.class.php';
require_once 'class/common/mc/FN/XxMaestroListaFN.class.php';
require_once 'class/im/alm/FN/ImAlmacenFN.class.php'; 
//require 'class/frm/SoFrm.php';

class SoController extends ControllerBase
{
	
	public function listarSo(){
		
	   $o_SoOrdenFN= new SoOrdenFN();       
		
	   $page = isset($this->requestVars['page']) ? $this->requestVars['page'] : 1;
	   $rp = isset($this->requestVars['rp']) ? $this->requestVars['rp'] : 10;
	   $sortname = isset($this->requestVars['sortname']) ? $this->requestVars['sortname'] : 'name';
	   $sortorder = isset($this->requestVars['sortorder']) ? $this->requestVars['sortorder'] : 'desc';		
	   $o_SoOrdenFN->page = $page;
	   $o_SoOrdenFN->tamPag = $rp;
	   $o_SoOrdenFN->sortCampos = $sortname;
	   $o_SoOrdenFN->sortType   = $sortorder;
        if ($this->requestVars){
            if (array_key_exists('soId', $this->requestVars)) {
                $o_SoOrdenFN->setSoId($this->requestVars["soId"]) ;   
            }
            if (array_key_exists('clienteNombre', $this->requestVars)) {
                $o_SoOrdenFN->setClienteNombre($this->requestVars["clienteNombre"]);  
            }      
            if (array_key_exists('status', $this->requestVars)) {
                $o_SoOrdenFN->setStatus($this->requestVars["status"]);  
            }                     
        }
        $result = $o_SoOrdenFN->select();     
        $vars['result'] = $result;
        $vars['ordenFN'] = $o_SoOrdenFN;
        if (array_key_exists('modoBusqueda', $this->requestVars)) {
            $vars['modoBusqueda'] = $this->requestVars["modoBusqueda"];
        }else{
            $vars['modoBusqueda'] = "";
        }
        $this->view->show("so/ordenes/SoLista",$vars);
		
	}
	
    public function listarSoForm(){
		if (!isset($vars)){
			$vars = '';
		}        
        $this->view->show("so/ordenes/SoListaForm",$vars);
    }
    
    public function shw(){
    	$this->shwForm("view");
    }
    
    public function shwForm($view=""){
		$AlmacenFrm     = new AlmacenFrm();
        $vars           = array();
		$o_SoOrdenFN	= new SoOrdenFN();  
		$a_almacenRef	= $o_SoOrdenFN->select();		
        $AlmacenFrm->listaAlmacenRef = $a_almacenRef;       
        if ($this->requestVars){
            if (array_key_exists('almacenId', $this->requestVars)) {
                if ($this->requestVars["almacenId"]){
                    $o_SoOrdenFN= new SoOrdenFN();       
                    $o_SoOrdenFN->setAlmacenId($this->requestVars["almacenId"]);
                    $o_AlmacenBN = $o_SoOrdenFN->selectByPK();
                    if ($o_AlmacenBN){
                        $AlmacenFrm->almacenId     = $o_AlmacenBN->getAlmacenId();
                        $AlmacenFrm->nombre        = $o_AlmacenBN->getNombre();
                        $AlmacenFrm->almReferencia = $o_AlmacenBN->getAlmacenRefId();
                        $AlmacenFrm->direccion1    = $o_AlmacenBN->getDirecc1();
                        $AlmacenFrm->direccion2    = $o_AlmacenBN->getDirecc2();
                        $AlmacenFrm->ciudad        = $o_AlmacenBN->getCiudad();
                        $AlmacenFrm->direccEstado  = $o_AlmacenBN->getAlmEstado();
                        $AlmacenFrm->almVentaSw    = $o_AlmacenBN->getParaVentaSw();
                        $AlmacenFrm->almCompraSw   = $o_AlmacenBN->getParaCompraSw();
                        $AlmacenFrm->estado  	   = $o_AlmacenBN->getEstado();
                        $AlmacenFrm->creaUsr  	   = $o_AlmacenBN->getCreaUsr();
                        $AlmacenFrm->creaFecha     = $o_AlmacenBN->getCreaFecha();
                        $AlmacenFrm->modifUsr      = $o_AlmacenBN->getModifUsr();
                        $AlmacenFrm->modifFecha    = $o_AlmacenBN->getModifFecha();
                    }
                }
            }
        }         
        $vars['AlmacenFrm'] = $AlmacenFrm;
        if (!isset($view) || $view==""){
        	$this->view->show("im/alm/Almacen",$vars);
        }else{
        	$this->view->show("im/alm/AlmacenView",$vars);
        }
    }
      
    public function nuevo(){
           
        $o_XxXxMaestroListaFN = new XxMaestroListaFN();
        
        $o_XxXxMaestroListaFN->setListaId('tipoOrdVt');
        $ao_TipoOrden = $o_XxXxMaestroListaFN->select();
        
        $o_XxXxMaestroListaFN->setListaId('monedaPO');
        $ao_Moneda      = $o_XxXxMaestroListaFN->select();
        
        $o_XxXxMaestroListaFN->setListaId('frmPagVts');
        $ao_PagVts     = $o_XxXxMaestroListaFN->select();
        
 
        $a_Maestros['Moneda']              = $ao_Moneda;
        $a_Maestros['listaTipoOrden']      = $ao_TipoOrden;        
        $a_Maestros['PagVts']      = $ao_PagVts;        
        $vars['a_Maestros']                = $a_Maestros;
        $this->view->show("so/ordenes/nuevo",$vars);   
    }
    
    
    public function editar(){
       if ($this->requestVars)
       {   
          if (array_key_exists('soId', $this->requestVars)) 
          {     
            $o_SoOrdenFN = new SoOrdenFN();
            $o_SoOrdenFN->setId($this->requestVars["soId"]);
            $o_SoOrdenBN = $o_SoOrdenFN->getSoOrden();
        
            $o_XxXxMaestroListaFN = new XxMaestroListaFN();
            
            $o_XxXxMaestroListaFN->setListaId('tipoOrdVt');
            $ao_TipoOrden = $o_XxXxMaestroListaFN->select();
            
            $o_XxXxMaestroListaFN->setListaId('monedaPO');
            $ao_Moneda      = $o_XxXxMaestroListaFN->select();
            
            $o_XxXxMaestroListaFN->setListaId('frmPagVts');
            $ao_PagVts     = $o_XxXxMaestroListaFN->select();
            
            
            
         
                           
            $a_Maestros['o_SoOrdenBN']         = $o_SoOrdenBN;
            $a_Maestros['Moneda']              = $ao_Moneda;
            $a_Maestros['listaTipoOrden']      = $ao_TipoOrden;        
            $a_Maestros['PagVts']      = $ao_PagVts;        
            $vars['a_Maestros']                = $a_Maestros;
            $this->view->show("so/ordenes/editar",$vars); 
          }
       }      
    }
    
    public function editarSave()
    {
      try 
      {
        if ($this->requestVars)
        {
                $o_SoOrdenDP                = new SoOrdenDP();
                $o_SoOrdenDP->setId($this->requestVars["soId"]);
                $o_SoOrdenDP->eliminarSoOrdenCabeceraDetalle(); // eliminar Recepcion
                
                
                $o_SoOrdenDP->setTipo($this->requestVars["tipo"]);
                $o_SoOrdenDP->setSoNum($this->requestVars["ordenNro"]);
                $o_SoOrdenDP->setClienteId($this->requestVars["clienteId"]);
                $o_SoOrdenDP->setClienteNombre($this->requestVars["clienteNombre"]);
                $o_SoOrdenDP->setContacto($this->requestVars["contacto"]);
                $o_SoOrdenDP->setCashCred($this->requestVars["pagVts"]);
                $o_SoOrdenDP->setMoneda($this->requestVars["moneda"]);
                $o_SoOrdenDP->setFechaRequerida($this->requestVars["fechaReq"]);
                $o_SoOrdenDP->setFechaProgramada($this->requestVars["fecProgram"]);
                $o_SoOrdenDP->setFechaVcto($this->requestVars["fechaVcto"]);
                $o_SoOrdenDP->setObs($this->requestVars["obs"]);
                $o_SoOrdenDP->setTipoCambio($this->requestVars["tipoCambio"]);
                
                $o_SoOrdenDP->setBillToNombre($this->requestVars["s_BillToNombre"]);
                $o_SoOrdenDP->setBillToDireccion1($this->requestVars["s_BillToDireccion1"]);
                //$o_SoOrdenDP->setBillToDireccion2($this->requestVars["s_BillToDireccion2"]);
                $o_SoOrdenDP->setBillToCiudad($this->requestVars["s_BillToCiudad"]);
                $o_SoOrdenDP->setBillToEstado($this->requestVars["s_BillToEstado"]);
                $o_SoOrdenDP->setBillToPais($this->requestVars["s_BillToPais"]);
                $o_SoOrdenDP->setBillToCodPostal($this->requestVars["s_BillToCodPostal"]);
                $o_SoOrdenDP->setBillToSucursal($this->requestVars["s_BillToSucursal"]);
                $o_SoOrdenDP->setShipToNombre($this->requestVars["s_ShipToNombre"]);
                $o_SoOrdenDP->setShipToDireccion1($this->requestVars["s_ShipToDireccion1"]);
                //$o_SoOrdenDP->setShipToDireccion2($this->requestVars["s_ShipToDireccion2"]);
                $o_SoOrdenDP->setShipToCiudad($this->requestVars["s_BillToCiudad"]);
                $o_SoOrdenDP->setShipToEstado($this->requestVars["s_ShipToEstado"]);
                $o_SoOrdenDP->setShipToPais($this->requestVars["s_ShipToEstadoPais"]);
                $o_SoOrdenDP->setShipToCodPostal($this->requestVars["s_ShipToCodPostal"]);

              $o_SoOrdenDP->update();
              if($this->requestVars["a_ItemId"] )
              {
                  $i=1;
                  foreach ($this->requestVars["a_ItemId"] as $iKey => $value)
                  {
                    $o_SoOrdenLineaDP = new SoOrdenLineaDP();
                 
                    $o_SoOrdenLineaDP->setSoId($o_SoOrdenDP->getId());	      
                    $o_SoOrdenLineaDP->setLineaId($i);               
                    $o_SoOrdenLineaDP->setArtId($this->requestVars["a_ItemId"][$iKey]);                        
                    $o_SoOrdenLineaDP->setCant($this->requestVars["a_Cant"][$iKey]);
                    $o_SoOrdenLineaDP->setPrecio($this->requestVars["a_Precio"][$iKey]);
                    $o_SoOrdenLineaDP->setCreaFecha(date('Y-m-d'));
                    $o_SoOrdenLineaDP->save();
                    
                    $i++;
                  }
              }
              $a_result['rpta'] = 'true';
              $a_result['msg'] = '';
              
          }
      }catch (Exception $e)
      {
        $a_result['rpta'] = 'false';
        $a_result['msg'] = $e->getMessage().' en '.$e->getFile().' linea '.$e->getLine();        
      }
      
      echo json_encode($a_result);
    
    }
    
    public function guardarSave()
    {
      try 
      {
        if ($this->requestVars){
            $o_SoOrdenDP                = new SoOrdenDP();
            
            $o_SoOrdenDP->setTipo($this->requestVars["tipo"]);
            $o_SoOrdenDP->setSoNum($this->requestVars["ordenNro"]);
            $o_SoOrdenDP->setClienteId($this->requestVars["clienteId"]);
            $o_SoOrdenDP->setClienteNombre($this->requestVars["clienteNombre"]);
            $o_SoOrdenDP->setContacto($this->requestVars["contacto"]);
            $o_SoOrdenDP->setCashCred($this->requestVars["pagVts"]);
            $o_SoOrdenDP->setMoneda($this->requestVars["moneda"]);
            $o_SoOrdenDP->setFechaRequerida($this->requestVars["fechaReq"]);
            $o_SoOrdenDP->setFechaProgramada($this->requestVars["fecProgram"]);
            $o_SoOrdenDP->setFechaVcto($this->requestVars["fechaVcto"]);
            $o_SoOrdenDP->setObs($this->requestVars["obs"]);
            $o_SoOrdenDP->setTipoCambio($this->requestVars["tipoCambio"]);
            
            
            $o_SoOrdenDP->setBillToNombre($this->requestVars["s_BillToNombre"]);
            $o_SoOrdenDP->setBillToDireccion1($this->requestVars["s_BillToDireccion1"]);
            //$o_SoOrdenDP->setBillToDireccion2($this->requestVars["s_BillToDireccion2"]);
            $o_SoOrdenDP->setBillToCiudad($this->requestVars["s_BillToCiudad"]);
            $o_SoOrdenDP->setBillToEstado($this->requestVars["s_BillToEstado"]);
            $o_SoOrdenDP->setBillToPais($this->requestVars["s_BillToPais"]);
            $o_SoOrdenDP->setBillToCodPostal($this->requestVars["s_BillToCodPostal"]);
            $o_SoOrdenDP->setBillToSucursal($this->requestVars["s_BillToSucursal"]);
            $o_SoOrdenDP->setShipToNombre($this->requestVars["s_ShipToNombre"]);
            $o_SoOrdenDP->setShipToDireccion1($this->requestVars["s_ShipToDireccion1"]);
            //$o_SoOrdenDP->setShipToDireccion2($this->requestVars["s_ShipToDireccion2"]);
            $o_SoOrdenDP->setShipToCiudad($this->requestVars["s_BillToCiudad"]);
            $o_SoOrdenDP->setShipToEstado($this->requestVars["s_ShipToEstado"]);
            $o_SoOrdenDP->setShipToPais($this->requestVars["s_ShipToEstadoPais"]);
            $o_SoOrdenDP->setShipToCodPostal($this->requestVars["s_ShipToCodPostal"]);
            

              $o_SoOrdenDP->save();
              if($this->requestVars["a_ItemId"] )
              {
                  $i=1;
                  foreach ($this->requestVars["a_ItemId"] as $iKey => $value)
                  {
                    $o_SoOrdenLineaDP = new SoOrdenLineaDP();
                 
                    $o_SoOrdenLineaDP->setSoId($o_SoOrdenDP->getId());	      
                    $o_SoOrdenLineaDP->setLineaId($i);               
                    $o_SoOrdenLineaDP->setArtId($this->requestVars["a_ItemId"][$iKey]);                        
                    $o_SoOrdenLineaDP->setCant($this->requestVars["a_Cant"][$iKey]);
                    $o_SoOrdenLineaDP->setPrecio($this->requestVars["a_Precio"][$iKey]);
                    $o_SoOrdenLineaDP->setCreaFecha(date('Y-m-d'));
                    $o_SoOrdenLineaDP->save();
                    
                    $i++;
                  }
              }
              $a_result['rpta'] = 'true';
              $a_result['msg'] = '';
              
          }
      }catch (Exception $e)
      {
        $a_result['rpta'] = 'false';
        $a_result['msg'] = $e->getMessage().' en '.$e->getFile().' linea '.$e->getLine();        
      }
      
      echo json_encode($a_result);
    
    }
    
    public function importarOrd(){
       if ($this->requestVars)
       {   
          if (array_key_exists('soId', $this->requestVars)) 
          {     
            $o_SoOrdenFN = new SoOrdenFN();
            $o_SoOrdenFN->setId($this->requestVars["soId"]);
            $o_SoOrdenBN = $o_SoOrdenFN->getSoOrden();
           
            $vars['o_SoOrdenBN']                = $o_SoOrdenBN;
            $this->view->show("so/ordenes/importOrden",$vars); 
          }
       }      
    }
}
?>